package com.example.ims.service;

import com.example.ims.ImsApplication;
import com.example.ims.pojo.Commodity;
import com.example.ims.repository.CommodityRepository;
import com.example.ims.service.inf.CommodityServiceInf;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Optional;


@Service
@Transactional
public class CommodityService implements CommodityServiceInf {
    @Autowired
    public CommodityRepository commodityRepository;


    // 入库业务逻辑方法
    public void stockIn(Commodity commodity) {
        // 可以在这里添加一些额外的业务逻辑验证等，比如数量不能为负数等（示例中简单处理）
        if (commodity.getQuantity() < 0) {
            throw new IllegalArgumentException("商品数量不能为负数");
        }
        commodityRepository.save(commodity);
    }
    // 根据ID查询商品的方法，可用于后续可能的其他业务逻辑，比如在出库等操作时查询商品信息


    // 查询所有商品的业务逻辑方法
    public List<Commodity> findAllCommodities() {
        return commodityRepository.findAll();
    }
    // 根据ID查询商品的方法，可用于后续可能的其他业务逻辑，比如在出库等操作时查询商品信息
    public Optional<Commodity> findById(Long id) {
        return commodityRepository.findById(id);
    }

    public void updateLocation(Long commodityId, String newLocation) {
        Optional<Commodity> commodityOptional = commodityRepository.findById(commodityId);
        if (commodityOptional.isPresent()) {
            Commodity commodity = commodityOptional.get();
            commodity.setLocation(newLocation);
            commodityRepository.save(commodity);
        } else {
            throw new IllegalArgumentException("未找到对应ID的商品，无法进行调拨操作");
        }
    }
    public void deleteCommodityById(Long id) {
        commodityRepository.deleteById(id);
    }
}